package com.makefuture.GeneratorModel;

import javax.sql.DataSource;

import com.jfinal.kit.PathKit;
import com.jfinal.kit.PropKit;
import com.jfinal.plugin.activerecord.generator.Generator;
import com.jfinal.plugin.c3p0.C3p0Plugin;

public class SqlserverGenerator {

	
	public static DataSource getDataSource() {
		PropKit.use("a_little_config.txt");
		 C3p0Plugin c3p0Plugin = new C3p0Plugin(PropKit.get("jdbcUrl").trim(), PropKit.get("user").trim(), PropKit.get("password").trim(),PropKit.get("jdbcDriver").trim());
         c3p0Plugin.start();
		 return c3p0Plugin.getDataSource();
		
	}
	
	/**
	 * 四个参数分别表示baseMode的包名，baseModel的输出路径，modle的包名，model的输出路径。 
	 * @param args
	 */
	public static void main(String[] args) {
		
		String baseModelPaceName = "com.makefuture.model.base";//base model 包名
		String baseModelOutputDir = PathKit.getRootClassPath()+"/../../../src/com/makefuture/model/base";//base mode 输出目录
		String modelPackName = "com.makefuture.model";
		String modelOutputDir = baseModelOutputDir + "/..";
		
		Generator generator = new Generator(getDataSource(), baseModelPaceName,
				baseModelOutputDir,modelPackName,modelOutputDir);
		generator.setMetaBuilder(new SqlserverMetaBuilder(getDataSource(),true,"dbo"));
		
		//generator.addExcludedTable("");//添加不需要生成的表名
		generator.setGenerateDaoInModel(true);//是否生成Dao层
		generator.setGenerateDataDictionary(true);//是否生成字典文件
		// 设置需要被移除的表名前缀用于生成modelName。例如表名 "osc_user"，移除前缀 "osc_"后生成的model名为 "User"而非 OscUser
		//generator.setRemovedTableNamePrefixes("t_","");


		generator.generate();
	}
	
//	import javax.sql.DataSource;
//
//	import com.demo.common.config.DemoConfig;
//	import com.jfinal.kit.PathKit;
//	import com.jfinal.kit.PropKit;
//	import com.jfinal.plugin.activerecord.generator.Generator;
//	import com.jfinal.plugin.c3p0.C3p0Plugin;
//
//	/**
//	 * 在数据库表有任何变动时，运行一下 main 方法，极速响应变化进行代码重构
//	 */
//	public class _JFinalDemoGenerator {
//		
//		public static DataSource getDataSource() {
//			PropKit.use("a_little_config.txt");
//			C3p0Plugin c3p0Plugin = DemoConfig.createC3p0Plugin();
//			c3p0Plugin.start();
//			return c3p0Plugin.getDataSource();
//		}
//		
//		public static void main(String[] args) {
//			// base model 所使用的包名
//			String baseModelPackageName = "com.demo.common.model.base";
//			// base model 文件保存路径
//			String baseModelOutputDir = PathKit.getWebRootPath() + "/../src/com/demo/common/model/base";
//			
//			// model 所使用的包名 (MappingKit 默认使用的包名)
//			String modelPackageName = "com.demo.common.model";
//			// model 文件保存路径 (MappingKit 与 DataDictionary 文件默认保存路径)
//			String modelOutputDir = baseModelOutputDir + "/..";
//			
//			// 创建生成器
//			Generator gernerator = new Generator(getDataSource(), baseModelPackageName, baseModelOutputDir, modelPackageName, modelOutputDir);
//			// 添加不需要生成的表名
//			gernerator.addExcludedTable("adv");
//			// 设置是否在 Model 中生成 dao 对象
//			gernerator.setGenerateDaoInModel(true);
//			// 设置是否生成字典文件
//			gernerator.setGenerateDataDictionary(false);
//			// 设置需要被移除的表名前缀用于生成modelName。例如表名 "osc_user"，移除前缀 "osc_"后生成的model名为 "User"而非 OscUser
//			gernerator.setRemovedTableNamePrefixes("t_");
//			// 生成
//			gernerator.generate();
//		}

	
}
